home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / c / c2man-2.0pl33.lha / c2man-2.0 / amiga / output.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-24  |  4.4 KB  |  143 lines

  1. /* $Id: output.h,v 2.0.1.9 1994/09/16 05:55:03 greyham Exp $
  2.  * format-independant output interface.
  3.  */
  4. #ifndef OUTPUT_H
  5. #define OUTPUT_H
  6.  
  7. /* To add a new output format:
  8.  * 1. Add the new -Tx suboption to the manual page.
  9.  * 2. Add handling for the new suboption to c2man.c, including the default
  10.  *    output file extension.
  11.  * 3. Copy nroff.c to xxx.c and change the xxx_... output functions and the
  12.  *    pointers in the xxx_output structure so the new xxx_output object
  13.  *    generates the correct output constructs. Try to do this without modifying
  14.  *    manpage.c if possible; add new output functions only if necessary.
  15.  * 4. Add the new xxx_output structure to the declaration of output structures
  16.  *    at the end of this file.
  17.  */
  18.  
  19. /* Output object defines what type of output is being generated.
  20.  * This contains pointers to functions that generate each type of output
  21.  * construct.
  22.  */
  23. struct Output
  24. {
  25.     /* comment until the end of the line */
  26.     void (*comment) _((void));
  27.  
  28.     /* header and introduction to the file */
  29.     void (*header) _((ManualPage *firstpage, int input_files, boolean grouped,
  30.                                     const char *name, const char *section));
  31.     
  32.     /* a dash */
  33.     void (*dash) _((void));
  34.     
  35.     /* start of a main section */
  36.     void (*section) _((const char *name));
  37.  
  38.     /* start of a sub section */
  39.     void (*sub_section) _((const char * name));
  40.  
  41.     /* break the current line here */
  42.     void (*break_line) _((void));
  43.  
  44.     /* a blank line */
  45.     void (*blank_line) _((void));
  46.  
  47.     /* switch into the mode to include declarations like in program code */
  48.     void (*code_start) _((void));
  49.  
  50.     /* switch back from code mode to normal */
  51.     void (*code_end) _((void));
  52.     
  53.     /* output a single string in code font */
  54.     void (*code) _((const char *text));
  55.  
  56.     /* start a list of tagged paragraphs */
  57.     void (*tag_list_start) _((void));
  58.  
  59.     /* end a list of tagged paragraph */
  60.     void (*tag_list_end) _((void));
  61.  
  62.     /* start a tagged paragraph: the tag should go straight after this */
  63.     void (*tag_entry_start) _((void));
  64.  
  65.     /* start a tagged paragraph that has an extra non-code bit at the end
  66.      * of the tag: the tag should go straight after this
  67.      */
  68.     void (*tag_entry_start_extra) _((void));
  69.  
  70.     /* end the tag on a tagged paragraph */
  71.     void (*tag_entry_end) _((void));
  72.  
  73.     /* end the tag on a tagged paragraph with an extra non-code bit at the end
  74.      * of the tag.
  75.      */
  76.     void (*tag_entry_end_extra) _((const char *text));
  77.  
  78.     /* start a name/value pair table */
  79.     void (*table_start) _((const char *longestag));
  80.  
  81.     /* an entry in the name/value pair table */
  82.     void (*table_entry) _((const char *name, const char * description));
  83.     
  84.     /* end the name/value pair table */
  85.     void (*table_end) _((void));
  86.  
  87.     /* an indented paragraph */
  88.     void (*indent) _((void));
  89.  
  90.     /* start a list */
  91.     void (*list_start) _((void));
  92.  
  93.     /* an entry in the list */
  94.     void (*list_entry) _((const char *name));
  95.  
  96.     /* the seperator between one entry in a list and the next */
  97.     void (*list_separator) _((void));
  98.  
  99.     /* end the list */
  100.     void (*list_end) _((void));
  101.  
  102.     /* include another file in the output */
  103.     void (*include) _((const char *filename));
  104.  
  105.     /* end the file */
  106.     void (*file_end) _((void));
  107.  
  108.     /* output string, quoted to protect against formatter controls */
  109.     void (*text) _((const char *text));
  110.  
  111.     /* output char, quoted to protect against formatter controls */
  112.     void (*character) _((const int c));
  113.  
  114.     /* parse formatter specific option. set to NULL if not available */
  115.     int  (*parse_option) _((const char *option));
  116.  
  117.     /* print formatter specific options to stderr. */
  118.     void (*print_options) _((void));
  119.  
  120.     /* output NAME section header and section names */
  121.     void (*name) _((const char *name));
  122.  
  123.     /* output separators between section name and terse description */
  124.     void (*terse_sep) _((void));
  125.  
  126.     /* output string, making it a hypertext reference */
  127.     void (*reference) _((const char *text));
  128.  
  129.     /* output string, displaying it emphasized (usually italic) */
  130.     void (*emphasized) _((const char *text));
  131. };
  132.  
  133. /* pointer to the relevant output structure */
  134. extern struct Output *output;
  135.  
  136. /* output structures for all formats we support */
  137. extern struct Output nroff_output, texinfo_output, latex_output, html_output , autodoc_output;
  138.  
  139. /* dummy routine which does nothing */
  140. void dummy _((void));
  141.  
  142. #endif
  143.